package com.htfyun.eink.pw.app;

import android.content.Context;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;


/**
 * 该类用于监听软键盘是否显示并获取其高度
 * 需要处理的问题
 * 1，键盘弹起后，键盘高度发生改变
 * 2，虚拟键隐藏/显示导致页面高度变化适配
 * 3，
 */
public class SoftKeyBoardListener {

    public static void hideKeyboard(EditText editText) {
        if (editText == null || editText.getContext() == null) {
            return;
        }

        InputMethodManager imm = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm == null) {
            return;
        }
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }

    /**
     * 需要延迟一下 才能显示 key board
     *
     * @param editText 接受输入的 EditText
     */
    public static void showKeyboard(final EditText editText) {
        editText.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (editText == null || editText.getContext() == null) {
                    return;
                }
                //设置可获得焦点
                editText.setFocusable(true);
//                editText.setFocusableInTouchMode(true);
                //请求获得焦点
                editText.requestFocus();
                //屏蔽此句 20210811, 解决keyboard 隐藏后, 有其他view被focus而导致有背景隐形的问题.
                //BUG 7800
//                editText.requestFocusFromTouch();
                //调用系统输入法
                InputMethodManager imm = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm != null) {
                    imm.showSoftInput(editText, 0);
                }
            }
        }, 160);

    }


}
